#include<bits/stdc++.h>
using namespace std;

int n,a[101][101],b[10005],c[101];
int cnt = 0;

bool cmp(int x,int y){
    return x > y;
}
 
int main(){
    cin >> n;
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= n; j++){
            cin >> a[i][j];
            b[++cnt] = a[i][j];
        }
    }
    sort(b + 1, b + 1 + cnt,cmp);
    //构建名次矩阵：根据原始矩阵中每个成绩对应的名次，构建新的名次矩阵
    int id = 0;   // 当前名次
    for(int i = 1; i <= cnt; i++){
        if(b[i] != b[i - 1]){ // 成绩变化检查
            id = i;  // 名次等于当前索引位置
        }
        c[b[i]] = id;
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {  // 根据成绩查找对应的名次
            cout << c[a[i][j]] << " ";
        }
        cout << endl; 
    }

    return 0;
}

/*
3
5 50 65
70 80 90
90 95 100
原始成绩：100, 95, 90, 90, 80, 70, 65, 50, 5
排序后：  100, 95, 90, 90, 80, 70, 65, 50, 5
名次分配： 1,   2,  3,  3,  5,  6,  7,  8, 9
*/